"""
将 项目中 一些通用的方法 封装到此文件中
问：为什么封装成类？——》类可以继承
"""
import requests
from jsonpath import jsonpath
from setting import  config_secret


class BaseMethods:
    """ 封装：访问项目中接口时，需要用到的独立的方法和属性 """

    # 问：login() 是定义成实例方法还是类方法？——》都可以，
    # 如果是实例方法，怎么调用？——》先 实例化一个对象 如 bm = BaseMethods() 再 bm.login()
    # 如果定义成类方法，怎么调用？——》BaseMethods.login(), 调用起来比较方便
    @classmethod
    def login(cls):
        """访问登录接口"""
        # 1.1 准备登录的数据
        url = "http://localhost:5021/login/api/login"
        method = "post"
        # data = {
        #     "account": "root",
        #     "password": "123456"
        # }
        data = config_secret.user_test
        # 1.2 访问等接口
        # resp = requests.request(method=method,url=url,json=data)
        # actual = resp.json()
        actual = requests.request(method=method, url=url, json=data).json()

        # 1.3 从响应结果中，提取 token ======> 将token设置为类属性，以便其他方法可以访问

        # cls.token = actual['data']['token']
        # # print(f"=======token: {cls.token}")
        # # return cls.token

        # =====> 使用 jsonpath  提取token
        cls.token = jsonpath(actual,'$..token')[0]


    def set_password(self):
        """访问 设置密码接口"""
        pass